const { version } = require('html-webpack-plugin')

module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true
  },
  plugins: ['react', 'prettier', '@typescript-eslint'],
  // 使用  Prettier 等规则
  extends: [
    'editorconfig',
    'react-app',
    'eslint:recommended',
    'plugin:react/recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:react/jsx-runtime',
    'plugin:react-hooks/recommended',
    'prettier',
    'plugin:prettier/recommended'
  ],

  // 自定义规则
  rules: {
    // 禁止使用 console.log
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',

    // 自定义 React 组件命名规则（例如必须大写开头）
    'react/jsx-component-name-type-check': ['error', { propName: 'PascalCase' }],

    // 允许数组解构中的剩余元素（React 旧版本兼容）
    'no-param-reassign': ['error', { props: false }],

    // 允许在 TSX 中使用箭头函数
    'react/tsx-no-bind': ['error', { allowArrowFunctions: true }],

    'react/self-closing-comp': 'off',

    // 允许省略空格的 JSX 语法
    'react/jsx-tag-spacing': [
      'error',
      {
        closingSlash: 'never',
        beforeSelfClosing: 'never',
        afterOpening: 'never',
        beforeClosing: 'never'
      }
    ],
    '@typescript-eslint/no-non-null-assertion': 'off',
    'prettier/prettier': 'error' // 将 Prettier 的格式问题视为 ESLint 的 error
  },

  // 指定解析器（支持 JSX 和 TypeScript）
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module',
    ecmaFeatures: {
      tsx: true,
      jsx: true
    }
  },
  settins: {
    react: {
      version: 'detect'
    }
  }
}
